package com.nuaa.yupicturebackend.auth.annotition;

import cn.dev33.satoken.interceptor.SaInterceptor;
import cn.dev33.satoken.strategy.SaAnnotationStrategy;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.annotation.PostConstruct;

@Configuration
public class SaTokenConfigure implements WebMvcConfigurer {
  
    // 注册 Sa-Token 拦截器，打开注解式鉴权功能  
    @Override  
    public void addInterceptors(InterceptorRegistry registry) {
        // 注册 Sa-Token 拦截器，打开注解式鉴权功能  
        registry.addInterceptor(new SaInterceptor()).addPathPatterns("/**");
    }  
  
    @PostConstruct
    public void rewriteSaStrategy() {  
        // 重写Sa-Token的注解处理器，增加注解合并功能   
        SaAnnotationStrategy.instance.getAnnotation = (element, annotationClass) -> {
            return AnnotatedElementUtils.getMergedAnnotation(element, annotationClass);
        };  
    }  
}
